Method and apparatus of performing remote command dispatching

ABSTRACT

Disclosed are an apparatus and methods of remotely managing a managed machine over a communication network. One example method of operation may include identifying the managed machine operating in a communication network and transmitting a connection establishment message to the managed machine over the communication network. In response, an acceptance message may be received from the manage machine. Once a secure channel has been established, the administrator may begin transmitting a command prompt command over the communication network to be executed on the managed machine. The management operations may be performed from a browser-based application.

CROSS-REFERENCE TO RELATED APPLICATION

The instant application is a continuation of U.S. patent applicationSer. No. 15/089,881, filed Apr. 4, 2016, entitled METHOD AND APPARATUSOF PERFORMING REMOTE COMMAND DISTPATCHING, now U.S. issued Pat. No.9,756,113, issued Sep. 5, 2017, which is a continuation of U.S. patentapplication Ser. No. 14/513,683, filed Oct. 14, 2014, entitled METHODAND APPARATUS OF PERFORMING REMOTE COMMAND DISTPATCHING, now U.S. issuedPat. No. 9,307,008, issued Apr. 5, 2016, which is a continuation of U.S.patent application Ser. No. 13/011,025, filed Jan. 21, 2011, entitledMETHOD AND APPARATUS OF PERFORMING REMOTE COMMAND DISPATCHING, now U.S.issued Pat. No. 8,862,713, issued on Oct. 14, 2014, the entire contentsof which are incorporated by reference herein

TECHNICAL FIELD OF THE INVENTION

This invention relates to a method and apparatus of dispatching commandsremotely from a web application, and, more particularly, to providingthe commands to a managed computer command process over a networkconnection.

BACKGROUND OF THE INVENTION

User workstations or managed machines (computing devices) operate in adata communication network by communicating with other managed machinesand/or administrative machines. Regardless of the status of the machine,administrative machines operate to support the ongoing communication andapplications operating on the managed machines.

Accessing and executing commands on a managed machine through anadministrative interface is a common method of updating, controlling,debugging and ensuring the continued seamless operation of the managedmachine. However, certain challenges are presented with the advent ofvarying operating systems, control interfaces and other commonalities ofthe managed machines operating in a dynamic data communication network.For example, various applications used by administrators to managenetwork computing devices often rely on a web-based browser applicationto engage the administrator with certain options and simple execution ofadministrative actions. In addition, feedback communications between theadministrative machine and the managed machine(s) may require a secureconnection and other communication features prior to authorizingadministrative access to managed machines.

SUMMARY OF THE INVENTION

One embodiment of the present invention may include a method of remotelymanaging a managed machine. The method may include identifying themanaged machine operating in a communication network, and transmitting aconnection establishment message to the managed machine over thecommunication network. Other operations of the method may includereceiving an acceptance message from the manage machine, andtransmitting a command prompt command over the communication network tobe executed on the managed machine.

Another example embodiment of the present invention may include anapparatus configured to remotely manage a managed machine. The apparatusmay include a processor configured to identify the managed machineoperating in a communication network, and a transmitter configured totransmit a connection establishment message to the managed machine overthe communication network. The apparatus may also include a receiverconfigured to receive an acceptance message from the manage machine, andwherein the transmitter is further configured to transmit a commandprompt command over the communication network to be executed on themanaged machine.

BRIEF DESCRIPTION OF THE DRAWINGS

FIGS. 1A and 1B illustrate example network configurations, according toexample embodiments of the present invention.

FIG. 2 illustrates an example application communication session,according to an example method of operation of the present invention.

FIG. 3 illustrates an example logic flow diagram, according to anexample method of operation of the present invention.

FIG. 4 illustrates an example graphical user interface (GUI)administrator web application according to an example embodiment of thepresent invention.

FIG. 5 illustrates an example network entity device configured to storeinstructions, software, and corresponding hardware for executing thesame, according to example embodiments of the present invention.

FIG. 6 illustrates a network element according to an example embodimentof the present invention.

DETAILED DESCRIPTION OF THE INVENTION

It will be readily understood that the components of the presentinvention, as generally described and illustrated in the figures herein,may be arranged and designed in a wide variety of differentconfigurations. Thus, the following detailed description of theembodiments of a method, apparatus, and system, as represented in theattached figures, is not intended to limit the scope of the invention asclaimed, but is merely representative of selected embodiments of theinvention.

The features, structures, or characteristics of the invention describedthroughout this specification may be combined in any suitable manner inone or more embodiments. For example, the usage of the phrases “exampleembodiments”, “some embodiments”, or other similar language, throughoutthis specification refers to the fact that a particular feature,structure, or characteristic described in connection with the embodimentmay be included in at least one embodiment of the present invention.Thus, appearances of the phrases “example embodiments”, “in someembodiments”, “in other embodiments”, or other similar language,throughout this specification do not necessarily all refer to the samegroup of embodiments, and the described features, structures, orcharacteristics may be combined in any suitable manner in one or moreembodiments.

In addition, while the term “message” has been used in the descriptionof embodiments of the present invention, the invention may be applied tomany types of network data, such as, packet, frame, datagram, etc. Forpurposes of this invention, the term “message” also includes packet,frame, datagram, and any equivalents thereof. Furthermore, while certaintypes of messages and signaling are depicted in exemplary embodiments ofthe invention, the invention is not limited to a certain type ofmessage, and the invention is not limited to a certain type ofsignaling.

According to example embodiments of the present invention, anadministrator may be any information technology (IT) systemadministrator, IT service provider, and/or computer owner/operator thatprovides administrative functions to the computer devices, connectionsand other network resources. A managed machine may be anynetwork-connected computer device managed by the administrator. Themanaged machines may be connected directly to the administrator'smachine, or, over a network connection.

An administrator application may be a web-based application that permitsthe administrator to manage one or more remote managed machines. Asecure network channel may be setup and established between theadministrator machine and the remote managed machine via theadministrator application. The secure network channel may provideconnections over which data packets may be exchanged. The networkchannel may pass through a wide area network (WAN) (e.g. the Internet)or through a private local area network (LAN).

A server process may be an application that includes a process runningon the remote managed machine. The server process accepts connectionsfrom the administrator application and assists with setting up a channeland transmitting and receiving commands and data. An administratorplug-in may be a browser plug-in operating in the context of theadministrator application that connects with and interacts with theserver process over the existing network channel.

Remote command prompt dispatching may include dispatching Microsoft®disk operating commands (DOS) to a command prompt. The commands may betransmitted over a network from a web application to a target machineoperating on a private network. The commands may be transmitted througha secure channel that is established between the web application hostcomputer and the target machine or client computer. The commands may beprovided to a command prompt process (i.e., CMD.EXE). Output may be sentback through the same secure channel from the client computer to the webapplication host machine.

FIG. 1A illustrates an example network communication path between amanaged machine and an administrator machine, according to exampleembodiments of the present invention. Referring to FIG. 1A, anadministrator machine 102 is in communication with a managed machine103. The communication path may be over a WAN, such as, the Internet, ora LAN. The administrator machine 102 may be a server, computer or othercomputing device capable of providing a user interface. The managedmachine 103 may be a laptop, computer, personal digital assistant, smartphone or any other computer network compatible device capable ofestablishing a communication path or secure channel 110 with theadministrator machine 102.

FIG. 1B illustrates an example network communication path between amanaged machine 103 and administrator machine 102 that includes anestablished secure channel 100, according to example embodiments of thepresent invention. Referring to FIG. 1B, the administrator initiates aconnection via a secure channel to the remote managed machine 103. Theserver process running on the managed machine accepts and acknowledgesthe connection establishment by transferring an acceptance message backto the administrator application. A secure connection may then beestablished between the managed machine 103 and the administratormachine 102. Examples of this process are discussed in further detailbelow.

One example method of dispatching Windows® command prompt commands froma browser-based web application to a remote target machine is describedin detail below with reference to FIG. 2. Referring to FIG. 2, thecommands may be executed by a command prompt process and thecorresponding output of the executed commands is delivered back to theweb application. The administrator browses for a command prompt functionfor a given managed machine that exists within the administratorapplication 221 of the administrator's user interface 220. Anadministrator plug-in may be executed and run in a web browser of theuser interface 220 on the administrator machine 102. The web browser mayestablish a connection through a proprietary secured channel to a serverprocess 231 running on the application desktop 230 of the managedmachine 103.

In operation, the administrator 102 browses the command prompt for aparticular managed machine 103 viewable from the administratorapplication 221. The administrator plug-in initiates a connection via asecure channel to a server process 231 of the remote managed machine103. The server process 231 running on the managed machine accepts andacknowledges the connection establishment by transferring an acceptancemessage back to the administrator application 221. The server process231 creates a command prompt child process dedicated to the createdsession and then waits for commands. If no command is received within aspecified period of time (e.g., 5 minutes), then the command promptchild process will be terminated.

After session establishment, the administrator may receive anotification or web browser-based indicator that the command promptchild process has been executed and that commands may be received by themanaged machine 103. The administrator may then enter a command promptcommand into the administrator application 221. The command promptcommand is transferred over the secure channel to the managed machine103 via the administrator plug-in, and the server process 231 redirectsthe command to the command prompt child process.

As a result of session establishment and command prompt commandexecution, the server process 231 reads any output from the commandprompt child process and sends the outback back through the proprietarysecured channel to the administrator plug-in in the form of a datamessage. The administrator application 221 reads any such output fromthe administrator plug-in and renders this data in the browser for theadministrator. The result of the output may be based on the output ofthe command prompt process operating on the managed machine 103. Theoutput is redirected from the command prompt on the managed machine 103to the browser window 220 on the administrator machine 102. For example,if a “copy” command is executed, then whatever the result of that copycommand is outputted on the managed machine 103 would be the resultingoutput that appears in the browser window 220 on the administratormachine 102.

Command prompt commands may be re-entered and re-executed multiple timesat the administrator's discretion. Or, alternatively, a script may besetup to execute a string of commands (i.e, MS-DOS commands, such as,“fdisk”, “copy”, “delete”, “edit”, etc.). In this example, a script maybe setup to execute one or more of the above-noted commands, and, may bestored and executed on the managed machine 103. The administrator isfree to send a command to execute such scripts from the administratorinterface 220. However, in certain instances, the administratorinterface itself may not support a scripting mechanism to setup such ascript. In order to perform a certain administrative operation, thecommand prompt child process may be created from the “CMD.exe” programfound in the windows system directory.

FIG. 3 illustrates an inter-process communication between theadministrative application, the server process and the command promptchild process and related commands. Referring to FIG. 3, theadministrator application 221 interfaces with the server process 231.The sub-processes or additional processes operating under the serverprocess 231 includes the command prompt child process (CMD.EXE) 302,which is responsible for initiating, certain functions, such as, acontrol break (control-c) command 301B and the launch function 301A,which are described in detail below.

The inter-process communication is accomplished using a secureconnection or pipe, such that the input to the command prompt comes fromthe server process 231 and the output of the command prompt is read bythe server process 231. The “pipe” or secure channel 110, as illustratedin FIG. 2, may be used to conduct inter-process communication with achild process with the command prompt process on the managed machine. Ifthe administrator was located at the physical console of the managedmachine 103, they would normally run the CMD.exe process and manuallyenter their commands or execute a script directly on the managed machine103.

According to example embodiments of the present invention, the serverprocess 231 acts as the surrogate of the administrator by relaying theadministrator's commands to the CMD.exe process on the managed machine103, and, in turn, reading the subsequent output. Commands received fromthe administrator may be pre-processed before being dispatched to thecommand prompt for execution. Pre-processing may include removingsuperfluous whitespace, such as, character ASC-II blank spaces and othernon-relevant data. Other pre-processing operations may include rejectinga subset of commands deemed to be undesirable in the context of theremote session (i.e. START, CLS, COLOR, ECHO, PROMPT, SHUTDOWN, EDIT,TITLE, POWERSHELL, etc.)

In rejecting the above-noted commands, these commands may be undesirablebecause their resulting output is either useless or harmful when theadministrator is not operating directly at the console. For example, the“COLOR” command changes the color of the background and text displayedby the command prompt console. Since the administrator is not at thephysical console, such a command would be deemed useless or unnecessarysince no human decision making is shared by the command's execution.“SHUTDOWN” may also be disallowed since it would terminate the sessionand obviously turn off the machine.

The server process 231 may implement special handling for certaincommands, and executing these commands directly rather than dispatchingthese to the command prompt. For example, the “launch” command 301A,which is used to start a new process and launch the requested process inthe active session and as a child of the server process 231 may belaunched directly. Also, control-c (control break) 301B, which may beused to cancel a previously executed long-running operation (e.g. PINGor NETSTAT), may be executed directly. The server process 231 managesthe transfer and adaptation of the Unicode string formats exchangedbetween the browser-based administrator application and the commandprompt operating on the managed machine. The command prompt isaccessible at the GUI (see 401 of FIG. 4) of the administrator. However,the existence of the command prompt is present on the managed computer103. For example, by default, most browsers use UTF-8 text encoding,which may not be the same encoding used by the command prompt on themanaged machine 103, and, thus a mapping and/or translation must beperformed prior to executing the command.

According to example embodiments of the present invention, the commandprompt session is provided to the administrator remotely in the contextof a remote-control connect session that must be established in order tosupply command data to the existing managed machine with a pre-installedagent. The command prompt commands and their corresponding responses areencoded as JavaScript object notation messages (JSON), which are used torepresent simple data structures and associative arrays or objects. JSONis language-independent and uses parsing which provides interoperabilityof different programming languages and their corresponding operatingenvironments. The JSON messages are created and sent over transmissioncontrol protocol (TCP) using a relayed or P2P connection. The messagesare exchanged over the existing channel established by an agent, server,and/or browser.

FIG. 4 illustrates an example GUI that may be used by the administratorto access the command prompt, according to example embodiments of thepresent invention. Referring to FIG. 4, the administrator application400 provides an interface to view the administrator machine 400 and thevarious network components of the managed network (103, 401A-401G,etc.). The administrative network configuration may provide support forall types of managed machines. For example, machines 401A-401G includesexamples of computers, laptops, PDAs, tablet PCs, smart phones, etc.,each of which may be capable of establishing a network connection to theadministrator server and receiving support from the remote commandprompt. After a secure connection and authorization has been establishedto managed computer 103, the command prompt 401 may appear as a windowon the administrator's GUI space, which may be used to enter commandsdirectly.

A remote command shell accessible from a web browser client may provideaccess to a managed machine 103. For example, a target managed machinethat is in another LAN and that may be inaccessible outside of theadministrator's network may be accessible by establishing a securechannel provided by an agent-server communication framework.

One example method of remotely managing a managed machine operation isillustrated in the flow diagram of FIG. 5, Referring to FIG. 5, themethod may include identifying the managed machine operating in acommunication network, at operation 501. The method may also includetransmitting a connection establishment message to the managed machineover the communication network, at operation 502, and receiving anacceptance message from the manage machine, at operation 503. The methodmay also include transmitting a command prompt command over thecommunication network to be executed on the managed machine, atoperation 504.

The operations of a method or algorithm described in connection with theembodiments disclosed herein may be embodied directly in hardware, in acomputer program executed by a processor, or in a combination of thetwo. A computer program may be embodied on a computer readable medium,such as a storage medium. For example, a computer program may reside inrandom access memory (“RAM”), flash memory, read-only memory (“ROM”),erasable programmable read-only memory (“EPROM”), electrically erasableprogrammable read-only memory (“EEPROM”), registers, hard disk, aremovable disk, a compact disk read-only memory (“CD-ROM”), or any otherform of storage medium known in the art.

An exemplary storage medium may be coupled to the processor such thatthe processor may read information from, and write information to, thestorage medium. In the alternative, the storage medium may be integralto the processor. The processor and the storage medium may reside in anapplication specific integrated circuit (“ASIC”). In the alternative,the processor and the storage medium may reside as discrete components.For example, FIG. 6 illustrates an example network element 600, whichmay represent any of the above-described network components 102, 103 and401.

As illustrated in FIG. 6, a memory 610 and a processor 620 may bediscrete components of the network entity 600 that are used to executean application or set of operations. The application may be coded insoftware in a computer language understood by the processor 620, andstored in a computer readable medium, such as, the memory 610. Thecomputer readable medium may be a non-transitory computer readablemedium that includes tangible hardware components in addition tosoftware stored in memory. Furthermore, a software module 630 may beanother discrete entity that is part of the network entity 600, andwhich contains software instructions that may be executed by theprocessor 620. In addition to the above noted components of the networkentity 600, the network entity 600 may also have a transmitter andreceiver pair configured to receive and transmit communication signals(not shown).

While preferred embodiments of the present invention have beendescribed, it is to be understood that the embodiments described areillustrative only and the scope of the invention is to be defined solelyby the appended claims when considered with a full range of equivalentsand modifications (e.g., protocols, hardware devices, software platformsetc.) thereto.

What is claimed is:
 1. A method, comprising: transmitting a connectionestablishment message to a managed machine over a communication networkvia an administrator plug-in application initiating the connectionestablishment message to a server process of the managed machine;responsive to receiving the connection establishment message, creating,by the server process, a corresponding command prompt child process; andtransmitting, to the server process that is currently operating on themanaged machine, at least one command prompt command over thecommunication network to be executed on the managed machine via thecommand prompt child process.
 2. The method of claim 1, furthercomprising identifying the managed machine operating in thecommunication network.
 3. The method of claim 1, wherein the transmittedconnection establishment message is received at the server processcurrently operating on the managed machine.
 4. The method of claim 1,wherein the initiating the connection establishment message occurs via asecure channel.
 5. The method of claim 1, further comprising terminatingthe command prompt child process after a predetermined period of time ifno command is received.
 6. The method of claim 1, wherein thetransmitting at least one command prompt command over the communicationnetwork to be executed on the managed machine is performed after anindicator is received that the command prompt child process has beenexecuted and that commands may be received by the managed machine. 7.The method of claim 6, further comprising receiving output from thecommand prompt child process as a result of the command prompt commandbeing executed on the managed machine.
 8. An apparatus, comprising: aprocessor; and a transmitter configured to transmit a connectionestablishment message to a managed machine over a communication networkvia an administrator plug-in application that initiates the connectionestablishment message to a server process of the managed machine;responsive to the connection establishment message being received, theserver process creates a corresponding command prompt child process;wherein the transmitter is further configured to transmit, to the serverprocess that is currently operating on the managed machine, at least onecommand prompt command over the communication network to be executed onthe managed machine via the command prompt child process.
 9. Theapparatus of claim 8, wherein the processor is configured to identifythe managed machine that operates in the communication network.
 10. Theapparatus of claim 8, wherein the transmitted connection establishmentmessage is received at the server process currently that operates on themanaged machine.
 11. The apparatus of claim 8, wherein the connectionestablishment message being initiated occurs via a secure channel. 12.The apparatus of claim 8, wherein the command prompt child process isterminated after a predetermined period of time if no command isreceived.
 13. The apparatus of claim 8, wherein the transmitterconfigured to transmit the at least one command prompt command after anindicator is received that the command prompt child process has beenexecuted and that commands may be received by the managed machine. 14.The apparatus of claim 13, comprising a receiver configured to receivean acceptance message from the managed machine responsive to theconnection establishment message being received, wherein the receiver isfurther configured to receive output from the command prompt childprocess as a result of the command prompt command being executed on themanaged machine.
 15. A non-transitory computer readable storage mediumconfigured to store instructions that when executed cause a processor toperform: transmitting a connection establishment message to a managedmachine over a communication network, via an administrator plug-inapplication initiating the connection establishment message to a serverprocess of the managed machine; responsive to receiving the connectionestablishment message, creating, by the server process, a correspondingcommand prompt child process; and transmitting, to the server processthat is currently operating on the managed machine, at least one commandprompt command over the communication network to be executed on themanaged machine via the command prompt child process.
 16. Thenon-transitory computer readable storage medium of claim 15, furthercomprising instructions that cause the processor to perform: identifyingthe managed machine operating in a communication network.
 17. Thenon-transitory computer readable storage medium of claim 15, wherein thetransmitted connection establishment message is received at the serverprocess currently operating on the managed machine.
 18. Thenon-transitory computer readable storage medium of claim 15, wherein theinitiating the connection establishment message occurs via a securechannel.
 19. The non-transitory computer readable storage medium ofclaim 15, further comprising instructions that cause the processor toperform: terminating the command prompt child process after apredetermined period of time if no command is received.
 20. Thenon-transitory computer readable storage medium of claim 19, wherein theinstructions to cause the processor to perform the transmitting at leastone command prompt command are further to configured to cause theprocessor to perform the transmitting after an indicator is receivedthat the command prompt child process has been executed and thatcommands may be received by the managed machine.